package wan.com.templateproject.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import redis.clients.jedis.Jedis;

/**
 * @author wan
 * @version 1.0.0
 * @Description radisson锁配置类
 * @createTime 2021年11月19日 09:48:12
 */
@Configuration
public class RedissonConfig {

    @Value("{redis.url}")
    private String[] address;

    @Bean
    @Profile("qa")
    public RedissonClient getRedisson() {
        Config config = new Config();
        //使用单例
        config.useSingleServer()
                //设置地址
                .setAddress(address[0])
                //设置连接等待超时时间(默认1000)
                .setConnectTimeout(3000)
                //等待节点回复时间(默认30000)
                .setTimeout(10000)
                //如果尝试达到 retryAttempts（命令失败重试次数） 仍然不能将命令发送至某个指定的节点时，将抛出错误。如果尝试在此限制之内发送成功，则开始启用 timeout（命令等待超时） 计时。默认值：3
                .setRetryAttempts(5)
                //在一条命令发送失败以后，等待重试发送的时间间隔。时间单位是毫秒。     默认值：1500
                .setRetryInterval(3000);
        return Redisson.create(config);
    }

    @Bean
    public Jedis getJedis() {
        return new Jedis();
    }

}
